package com.lxy.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lxy.common.domain.common.R;
import com.lxy.common.domain.dto.MaintenanceScheduleDTO;
import com.lxy.common.domain.dto.MaintenanceUsersDTO;
import com.lxy.common.domain.po.Repair;
import com.lxy.common.domain.vo.MaintenanceSchedulesVO;
import com.lxy.common.domain.vo.RepairUserVO;
import com.lxy.common.enums.MailTitle;
import com.lxy.user.domain.dto.*;
import com.lxy.user.domain.po.DailyMaintenance;
import com.lxy.user.domain.po.User;
import com.lxy.user.domain.vo.ForgetPasswordVO;
import com.lxy.user.domain.vo.FreezeOrUnFreezeUserVO;
import com.lxy.user.domain.vo.UserLoginVO;
import com.lxy.user.domain.vo.UserVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface UserService extends IService<User> {
    R<UserLoginVO> login(LoginFormDTO loginFormDTO);
    R sendMail(MailTitle title, String text, String email) throws Exception;
    R<LoginFormDTO> registration(RegistrationDTO registrationDTO) throws Exception;

    R malfunctionRepair(RepairDTO repairDTO);

    R completeRepair(CompleteRepairDTO completeRepairDTO);

    R<List<User>> getAllAuUser();

    R AuditUser(AuditDTO auditDTO) throws Exception;

    R submitDailyLog(String log);

    R<List<DailyMaintenance>> getMyDailyMaintenance();

    R<List<DailyMaintenance>> getAllDailyMaintenance();

    R<List<RegistrationDTO>> getAllUser();

    R freezeOrUnFreezeUser(FreezeOrUnFreezeUserVO freezeOrUnFreezeUserVO);

    R forgetPassword(ForgetPasswordVO forgetPasswordVO);

    R<List<UserVO>> showRepaierUser();

    R alertUser(Long alertsId, Long userId);

    R changeRepairStatus(Long repairId);

    R addMaintenanceSchedule(MaintenanceScheduleDTO maintenanceScheduleDTO);

    R arrangementMaintenanceSchedule(MaintenanceUsersDTO maintenanceUsersDTO);

    R<List<RepairUserVO>> getRepairUsers(List<Long> ids);

    R<List<MaintenanceSchedulesVO>> getAllMaintenanceSchedule();

    R updateMaintenanceSchedule(MaintenanceSchedulesVO maintenanceSchedulesVO);

    R<List<MaintenanceSchedulesVO>> getMyMaintenanceSchedules();

    R<List<Repair>> getAllRepair();

    R<String> upload(MultipartFile file);
}
